package ca.etsmtl.log120.tp3.mains;

import ca.etsmtl.log120.tp3.rangs.AbstractRangAnalysable;
import ca.etsmtl.log120.tp3.rangs.listes.ListeRangsPokerRegulier;

/******************************************************
Cours : LOG120
Session : E2011
Groupe : 01
Projet : Laboratoire #3
Etudiants : Nicolas Blais Miko
 	 		Yohan Trepanier-Montpetit
Codes perm. : BLAN24079109
			  TREY16079108
Professeur : Chamseddine Talhi
Charge de labo : Eric Goulet
Nom du fichier : ListeAnalyseurs.java
Date cree : 2011-07-06
Date dern. modif. 2011-07-06
*************************************************** ****
Historique des modifications
*************************************************** ****

***************************************************/

public abstract class RangPoker implements Comparable<RangPoker> {
	
	/**
	 * Methode de comparaison des rangs: un rang plus petit est plus fort qu'un rang plus grand
	 * Une comparaison avec un meilleur rang retourne une valeur positive
	 */
	public int compareTo(RangPoker rang){
		
		Object obj1 = rang;
		Object obj2 = this;
		
		for(Object obj: ListeRangsPokerRegulier.getListe()){
			if(obj.getClass().equals(obj1.getClass()))
				obj1 = obj;
			
			if(obj.getClass().equals(obj2.getClass()))
				obj2 = obj;
		}
		
		//Impression pour le debuggage: verification de ce que l'on compare
		//System.out.println(rang + " main2");
		//System.out.println(this + " main1");
		
		if(ListeRangsPokerRegulier.getListe().indexOf(obj1) > ListeRangsPokerRegulier.getListe().indexOf(obj2))
			return 1;
		else if(ListeRangsPokerRegulier.getListe().indexOf(obj1) < ListeRangsPokerRegulier.getListe().indexOf(obj2))
			return -1;
		else
			return comparerRangsIdentiques((AbstractRangAnalysable)rang, (AbstractRangAnalysable)this);
	}

	protected abstract int comparerRangsIdentiques(AbstractRangAnalysable rang1, AbstractRangAnalysable rang2);
}
